/**
 * Copyright (c) 2020-2021 浦东大爷 All rights reserved.
 * 机会永远都是留给有准备的人
 */
package com.job.moudle3.task5;

import java.util.*;
import java.util.List;

/**
 * @author: gitwo
 * @date: 2020-11-22
 * @description:使用集合实现斗地主游戏的部分功能，要求如下：
 *
 *  （1）首先准备 54 张扑克牌并打乱顺序。
 *
 *  （2）由三个玩家交替摸牌，每人 17 张扑克牌，最后三张留作底牌。
 *
 *  （3）查看三个玩家手中的扑克牌和底牌。
 *
 *  （4）其中玩家手中的扑克牌需要按照大小顺序打印，规则如下：
 *
 *     手中扑克牌从大到小的摆放顺序：大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3
 */
public class Poker {
    /**
     *  定义扑克牌的类
     *  1. 54张牌 4个花色，2~K，大小王
     */

    private List<Pok> poker;

    public Poker() {
        poker = new ArrayList<>();
        init();// 构造函数完成扑克牌的初始化
    }

    /**
     * 初始化扑克牌，根据数组产生一副全新的扑克牌
     */
    private void init() {
        String[] colour = new String[]{"♥","♠","♦","♣"};
        String[] number = new String[]{"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
        //增加两张特殊牌
        // 生成牌的时候就把牌按照从大到小的循序记录好。方便后面排序
        int count = 0;
        poker.add(new Pok(count++, "大王"));
        poker.add(new Pok(count++,"小王"));
        for(String num:number) {
            for(String col:colour) {
                poker.add(new Pok(count++,col+num));
            }
        }
    }

    /**
     * 洗牌
     */
    public void shuffle() {
        Collections.shuffle(poker); // 通过Collections.shuffle方法来随机打乱集合中的元素
    }

    /**
     * 公共的get方法获取到poker元素
     * @return
     */
    public List<Pok> getPoker() {
        return poker;
    }
}
